package com.dm.learn.java.swing;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JDialog;
import javax.swing.Timer;

/**
 * 
 * @author Damon.Han<br>
 *         这是用java实现的一个弹窗功能
 * @date 2014-4-21 上午10:07:43
 */
public class JPopup extends Timer {
	private static final long serialVersionUID = 2791827603307165823L;

	public JPopup(int arg0, ActionListener arg1) {
		super(arg0, arg1);
	}

	public static void main(String[] args) {
		MyDialog mydialog = new MyDialog();
		int height = 150;
		TimerAction timerAction = new TimerAction(mydialog);
		Timer timer = new Timer(0, timerAction);
		timer.start();
		for (int i = 0; i < 10; i++) {
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			height = height + 5;
			timerAction.setHeight(height);
		}
		timer.stop();
		new JPopup(1, timerAction);
	}
}

class TimerAction implements ActionListener {
	private MyDialog mydialog = null;

	private int height = 0;

	public void setHeight(int height) {
		this.height = height;
	}

	public TimerAction(MyDialog mydialog) {
		this.mydialog = mydialog;
	}

	public void actionPerformed(ActionEvent event) {
		mydialog.setLocation(((int) mydialog.getScreenSize().getWidth()) - 200,
				((int) mydialog.getScreenSize().getHeight() - 20 - height));
		mydialog.setSize(new Dimension(200, height));
	}
}

class MyDialog extends JDialog {

	private static final long serialVersionUID = 2791827603307165823L;

	private Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

	public Dimension getScreenSize() {
		return screenSize;
	}

	public MyDialog() {
		super();
		init();
	}

	private void init() {
		this.getContentPane().setLayout(new BorderLayout());
		this.setLocation(((int) screenSize.getWidth()) - 200,
				((int) screenSize.getHeight() - 20));
		this.setVisible(true);
		this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
	}

}
